package com.chenjt.jvm.first.five_heap;

/**
 * 注释：
 * 栈上分配测试
 * -DoEscapeAnalysis：不开启逃逸分析
 * -Xmx1G -Xms1G -XX:-DoEscapeAnalysis -XX:+PrintGCDetails
 *
 * +DoEscapeAnalysis：开启逃逸分析
 * -Xmx1G -Xms1G -XX:+DoEscapeAnalysis -XX:+PrintGCDetails
 *
 * 以上两个情况做对比
 * 结论：
 * 1.减少GC启用次数（提升程序性能）
 * 2.对象维护个数减少了（内存占用减少）
 * 3.程序执行时间变短，执行速度变快
 *
 * @author chenjt
 * @date 2025/6/10 9:33
 */
public class StackAllocation {


    public static void main(String[] args) {
        long start = System.currentTimeMillis();

        for (int i = 0; i < 10000000; i++) {
            alloc();
        }
        // 查看执行时间
        long end = System.currentTimeMillis();
        System.out.println("花费的时间为：" + (end - start) + "ms");

        // 为了方便查看堆内存中对象的个数，线程sleep
        try {
            Thread.sleep(10000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

    }

    private static void alloc(){
        User user = new User();// 未发生逃逸
    }

    static class User{

    }
}
